const express = require('express');
const app = express(); //创建一个express应用
const path = require('path');
const staticRoot = path.resolve(__dirname, '../public');

/**
 * 下面这段代码的作用：
 * 当请求时，会根据请求路径(req.path)，从指定的目录中寻找是否存在该文件，如果存在，直接响应文件内容，而不再移交给后续的中间件
 * 如果不存在文件，则直接移交给后续的中间件处理
 * 默认情况下，如果映射的结果是一个目录，则会自动使用index.html文件
 */
app.use(express.static(staticRoot));
// app.use(express.static(staticRoot), {
//   index: 'index.html',
//   // 配置默认找的页面, ???
// });

// app.use('/static',express.static(staticRoot));

//
// app.use("/static", (req, res) => {
//   console.log(req.baseUrl, req.path); // baseUrl 是 static
// 然后根据 req.path 去  匹配
// });

// 返回仅解析 urlencoded 正文并仅查看 Content-Type 标头与 type 选项匹配的请求的中间件。此解析器仅接受正文的 UTF-8 编码，并支持 gzip 和 deflate 编码的自动膨胀。
// 包含解析数据的新 body 对象在中间件（即 req.body）之后填充到 request 对象上，如果没有要解析的主体、Content-Type 不匹配或发生错误，则填充一个空对象（{}）。该对象将包含键值对，其中值可以是字符串或数组（当 extended 为 false 时）或任何类型（当 extended 为 true 时）。
// 解析"application/x-www-form-urlencoded" 格式的 消息体
app.use(express.urlencoded({ extended: true }));

// 解析content-type application/json 的 消息体
app.use(express.json());
// app.use(require("./myUrlEncoded"));

app.post('/api/student', (req, res) => {
  // 消息体 底层都是用流的方式读取 的
  console.log(req.body, 'body');
  res.send('1112');
});

app.use(require('./errorMiddleware'));

const port = 5008;

app.listen(port, () => {
  console.log(`server listen on ${port}`);
});
